/*============================================================================*/
/*                   TORTOISE TEAM                                            */
/*============================================================================*/
/*                        OBJECT SPECIFICATION                                */
/*============================================================================*
* name:            PIT.h
* version:         1.0
* created_by:      Andres Torres Garcia
* date_created:    November 13 2012
*=============================================================================*/
/* DESCRIPTION : Header file for basic handling of PIT chanels                */
/*============================================================================*/
/* FUNCTION COMMENT : Provides exported functions and symbols for basic       */
/* 					  handling of PIT chanels                                 */
/*                                                                            */
/*============================================================================*/
/*                               OBJECT HISTORY                               */
/*============================================================================*/
/*  REVISION |   DATE      |                               |      AUTHOR      */
/*----------------------------------------------------------------------------*/
/*  1.0      | 13/11/2012   |                               | Andres Torres   */                                                              
/*============================================================================*/

#ifndef PIT_H                                    /* To avoid double inclusion */
#define PIT_H

/* Includes */
/* -------- */
#include "stdtypedef.h"

/* Exported types and constants */
/* ---------------------------- */

/* Types definition */

/* typedef */

/*==================================================*/ 
/* Declaration of exported constants                */
/*==================================================*/ 
/* BYTE constants */

/* WORD constants */

/* LONG and STRUCTURE constants */

/*======================================================*/ 
/* Definition of RAM variables                          */
/*======================================================*/ 
/* BYTE RAM variables */

/* WORD RAM variables */

/* LONG and STRUCTURE RAM variables */

/*======================================================*/ 
/* close variable declaration sections                  */
/*======================================================*/ 

/* Exported functions prototypes and macros */
/* ---------------------------------------- */


/* ========================================================================== *
 *                               PIT Timers defines                           *
 * ========================================================================== */
 // For all this defines: value = TRUE or FALSE	
 /*!
  \def PIT_Module_ENABLE
  Clock for PIT timers is enabled (p 815[table 30-3] Ref Man)
*/
#define PIT_Module_ENABLE							(PIT.PITMCR.B.MDIS = FALSE)

/*!
  \def PIT_Module_DISABLE
  Clock for PIT timers is disabled (default) (p 815[table 30-3] Ref Man)
*/
#define PIT_Module_DISABLE							(PIT.PITMCR.B.MDIS = TRUE)

/*!
  \def PIT_FROZENinDBG(value)
  Allows the timers to be stopped when the device enters debug mode. (p 815[table 30-3] Ref Man)
*/
#define PIT_FROZENinDBG(value)						(PIT.PITMCR.B.FRZ = (value))

/*!
  \def PIT_EnablePITchannel(channel, value)
  Timer Enable Bit (p 818[table 30-6] Ref Man)
*/
#define PIT_EnablePITchannel(channel, value)		(PIT.CH[(channel)].TCTRL.B.TEN = (value))

/*!
  \def PIT_EnablePITinterrupt(channel, value)
  Timer Interrupt Enable Bit (p 818[table 30-6] Ref Man)
*/
#define PIT_EnablePITinterrupt(channel, value)		(PIT.CH[(channel)].TCTRL.B.TIE = (value))

/*!
  \def PIT_InterruptAck(channel)
  Clear timer interrupt flag (p 819[table 30-7] Ref Man)
*/
#define PIT_InterruptAck(channel) 					(PIT.CH[(channel)].TFLG.B.TIF = TRUE)

/*!
  \def PIT_LoadTimerValue(channel, timerValue)
  Set Timer value for PIT timer
*/
#define PIT_LoadTimerValue(channel, timerValue)		(PIT.CH[(channel)].LDVAL.R = (timerValue))

/*!
  \def PIT_CHNL_0
  PIT channel 0
*/
#define PIT_CHNL_0	0

/*!
  \def PERIOD_2MS
  Period of 2 ms
*/
#define PERIOD_2MS	128000UL

/* ==================================================== */
/* 				Function prototipes						*/

extern void vfnPIT_initModule(void);
extern void vfnPIT_init(T_UBYTE channel,T_ULONG TimerValue);

#endif